package com.ylbh.modules.activity.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ylbh.common.pojo.activity.dto.ActivityTemplateDTO;
import com.ylbh.common.pojo.activity.dto.ShoppingActivityDTO;
import com.ylbh.common.pojo.activity.dto.WholePointActivitiesDTO;
import com.ylbh.common.pojo.activity.vo.ShoppingActivityVO;
import com.ylbh.common.pojo.activity.vo.WholePointActivitiesTimeVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * 活动列表
 *
 * @author mgh
 * @date 2019-04-22 10:35:33
 */
@Mapper
@Repository
public interface SpikeActivityMapper extends BaseMapper<ShoppingActivityDTO> {

    /**
     * 获取活动名列表
     * @return
     */
    List<ShoppingActivityVO> selectActivityNameList();

    /**
     * 开启活动
     * @param date
     */
    void openActivity(@Param("time") Date date);

    /**
     * 关闭活动
     * @param date
     */
    void closeActivity(@Param("time") Date date);

    /**
     * 开启活动商品
     * @param date
     */
    void openActivityGood(@Param("time")Date date);

    /**
     * 关闭活动商品
     * @param date
     */
    void closeActivityGood(@Param("time")Date date);

    /**
     * 先根据活动id去查询活动的区间
     * @param activityId
     * @return
     */
    ShoppingActivityDTO selectShoppingActivityTime(String activityId);

    /**
     * 添加整点抢购时间
     * @param wholePointActivitiesDTO
     */
    void insertWholePointActivities(@Param(value = "wholePointActivitiesDTO") WholePointActivitiesDTO wholePointActivitiesDTO);

    /**
     * 获取整点时间列表
     * @param page
     * @return
     */
    List<WholePointActivitiesTimeVO> selectWholePointActivitiesTime(String keywords, Page<Integer> page);

    /**
     * 添加整点抢购模板
     * @param activityTemplateDTO
     */
    void insertActivityTemplate(@Param(value = "activityTemplateDTO") ActivityTemplateDTO activityTemplateDTO);

    /**
     * 获取对应抢购的模板详情
     * @param id
     * @return
     */
    ActivityTemplateDTO selectActivityTemplateDetails(String id);

    /**
     * 整点抢购模板列表
     * @param page
     * @return
     */
    List<ActivityTemplateDTO> selectActivityTemplateList(Page<Integer> page);

    /**
     * 修改整点抢购模板
     * @param activityTemplateDTO
     */
    void updateActivityTemplateById(@Param(value = "activityTemplateDTO") ActivityTemplateDTO activityTemplateDTO);

    /**
     * 删除整点抢购
     * @param ids
     */
    void updateActivityTemplateByIds(@Param(value = "ids") List<String> ids);

    /**
     * 插入活动地址记录
     * @param nextId
     * @param name
     * @param activityId
     * @param userId
     * @param date
     */
    void insertActivityAddress(String id, String name, String activityId, Long userId, Date date);

    /**
     * 根据活动id查询出所有的整点场次
     * @param activityId
     * @return
     */
    List<WholePointActivitiesTimeVO> selectWholePointByActivityId(String activityId);

    /**
     * 根据id修改整点场次
     * @param activityTime
     * @param beginTime
     * @param endTime
     * @param date
     * @param userId
     * @param id
     */
    void updateWholePointActivityById(String activityTime, String beginTime, String endTime, Date date, Long userId, String id, String newId);

    /**
     * 查询出活动整点的id
     * @param activityId
     * @return
     */
    List<String> selectActivityTimeId(String activityId);

    /**
     * 活动商品中修改商品状态
     * @param list
     */
    void updateActivityGoodsById(List<String> list, Integer type);

    /**
     * 修改整点抢购时间状态
     * @param activityId
     */
    void updatePointActivitiesByActivityId(String activityId, Integer type);

    /**
     * 最后修改大活动状态
     * @param activityId
     * @param type
     */
    void updateShoppingActivityByActivityId(String activityId, Integer type);

    /**
     * 将原id下的商品全部替换成新的活动整点id
     * @param oldId
     * @param newId
     */
    void updateActivityGoodsIdByOldId(String oldId, String newId);
}
